<?php
/**
 * Created by PhpStorm.
 * @description:
 * @time:
 * @Author: yfl
 * @QQ 554665488
 * Date: 2018-5-28
 * Time: 13:41
 */
//TCP 粘包的处理
//发送方发送的若干数据包到接收方接受时粘成一包，从接收缓冲区看，后一包数据的头紧接着前一个数据包的尾
//出现包的原因1.发送方：发送方需要等待缓冲区满了才能发出去，造成粘包。
//2。接收方不及时接受缓冲区的包，造成多个包接收
// EOF结束协议

$client = new Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);

$client->on('connect', function (swoole_client $client) {
    $data = '异步客户端的数据';
    $packge = pack('N', strlen($data)) . $data;
    for ($i = 0; $i < 5; $i++) {
        $client->send($packge);
    }
});
$client->on('receive', function (swoole_client $client, $data) {
    echo $data . PHP_EOL;
});
$client->on('error', function ($cli) {
});


//监听连接关闭事件,客服端关闭，或者服务器主动关闭
$client->on('close', function ($cli) {

});

//先绑定事件之后随后建立连接，连接失败直接退出并打印错误码
$client->connect('127.0.0.1', 9501) || exit("connect failed. Error: {$client->errCode}\n");
echo '直接执行不要等待异步处理结果的返回';